import { prisma } from '@/lib/prisma/client'
import { NextResponse } from 'next/server'

interface Device {
  id: string
  name: string
  type: string
  status: boolean
  data: any
  createdAt: Date
}

export async function GET() {
  try {
    const devices = await prisma.device.findMany({
      orderBy: {
        createdAt: 'desc'
      }
    })

    // 因为现在 data 是 Json 类型，不需要再手动解析
    return NextResponse.json(devices)
  } catch (error) {
    console.error('获取设备列表失败:', error)
    return NextResponse.json(
      { error: '获取设备列表失败' },
      { status: 500 }
    )
  }
}

export async function POST(request: Request) {
  try {
    const data = await request.json()
    console.log('接收到的设备数据:', data)

    if (!data.name || !data.type) {
      return NextResponse.json(
        { error: '设备名称和类型不能为空' },
        { status: 400 }
      )
    }

    const user = await prisma.user.findFirst({
      where: {
        OR: [
          { email: 'admin@example.com' },
          { email: 'user@example.com' }
        ]
      }
    })
    console.log('找到的用户:', user)

    if (!user) {
      return NextResponse.json(
        { error: '未找到有效用户' },
        { status: 400 }
      )
    }

    // 直接传入 data 对象，不需要转换
    const device = await prisma.device.create({
      data: {
        name: data.name,
        type: data.type,
        status: data.status || false,
        data: data.data || {},  // 直接存储对象，Prisma 会自动处理
        userId: user.id
      },
      include: {
        user: {
          select: {
            name: true,
            email: true
          }
        }
      }
    })
    console.log('创建的设备:', device)

    return NextResponse.json(device)
  } catch (error) {
    console.error('创建设备失败:', error)
    return NextResponse.json(
      { error: error instanceof Error ? error.message : '创建设备失败' },
      { status: 500 }
    )
  }
} 